Tenfingers: a decentralized sharing protocol

Ludvig Larsson
ludviglarsson@protonmail.com
tenfingers.org

Version 1.02

Abstract:
A decentralized sharing system will allow any entity to safely share any data with anyone or only a select few. Anyone trading some storage space will be able to share data that might be both anonymous, decentralized and take-down safe.
This works by reciprocal sharing; Alice shares Bob's data because Bob shares Alice's data. Sharing with several nodes assure the data is accessible from several regions in the world which assures a high availability. Strong encryption and obfuscation assures resilience to take-down because nodes do not know what they share.

1.	Introduction
FOSS, Free Open Source Software have gone from a fringe movement to enabling the majority of computer related work. There is a plethora of Operative Systems and most software can be found in the Free Open Source Software sphere, but there is something that is not yet free for everyone, and the Tenfingers Sharing Protocol attempts to change that: Decentralized Online Hosting.

There are already some tries with decentralized sharing, but historically they all have some restrictions; needing a crypto currency to function, needing a charitable node that shares your data for free, it is centralized or the data is not encrypted.

2.	Sharing

Computers nowadays usually have unused storage space that we can leverage and trade for an online presence.
If we want resilience, we can share our data with tens or hundreds of other nodes, which makes each online megabyte ‘cost’ (more or less) ten to a hundred megabytes of disk space and in return, tens or hundreds of computers will serve our data.
For example, A 10MB web page, shared a hundred times, would cost less than a couple of gigabytes of local storage space.

3.	Network
Nodes are identified by an asymmetric RSA key, they will connect to other nodes
to gather information about the network and learn about new nodes.
The nodes are stored in a list and will be contacted from time to time to verify they exist and that they are running.
Shared data is stored on nodes and a link file can be generated, containing the addresses to those nodes, and some extra information like the name of the data. The link file grants access to both downloading the data and to decrypt it.
As a user shares data, another data is generated and is shared in the same manner. It contains a list of the addresses concerning the original data, but is not shared by the same nodes. This information will be updated when a node changes address, so that a link will not go stale over time.
To make this work, even if our node change address, two files are shared alongside the link file. see fig 1. They contain addresses to the base payload (the shared data) but also addresses to the ‘other’ accompanying file so that we always will have the possibility to download the data. They are updated when used.

Fig 1:
Light blue boxes denotes files
Darker blue boxes denotes file content
“Addresses” is lists of node addresses who store a specific data for us, the arrows shows what they store.

4.	Incentive
The incentive is based on: I’m sharing your data because you are sharing my data.
Coupled with redundancy there is a high chance the data is always accessible.

5.	Privacy
All communication is started with an asymmetric RSA exchange sharing a AES256 key-pair generated on the fly, assuring we talk with the right node (the RSA part), and that our data cannot be spied on (the AES part).
The data itself is also encrypted with AES256 which means nodes do not know what they are sharing. Only those having access to the link file, which contains the addresses of the nodes storing the data and the AES key-pair) will be able to both access the information and decrypt it.
As you can share as many copies as you want to, the probability that all of them are in the same country or region of the world greatly diminishes with the increasing number of copies shared. This makes it resilient to any manual take-down too.

6.	Conclusion
We have a lot of unused storage space, we can use it to enable a secure and decentralized presence online for anyone at no more cost than sharing some of our bandwidth.